(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
Rewrite Strategy: FULL
(1) DecreasingLoopProof (EQUIVALENT transformation)
The following loop(s) give(s) rise to the lower bound Ω(n1):
The rewrite sequence
circ(cons(a, s), t) →+ cons(msubst(a, t), circ(s, t))
gives rise to a decreasing loop by considering the right hand sides subterm at position [1].
The pumping substitution is [s / cons(a, s)].
The result substitution is [ ].
(2) BOUNDS(n^1, INF)
(3) RenamingProof (EQUIVALENT transformation)
Renamed function symbols to avoid clashes with predefined symbol.
(4) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
S is empty.
Rewrite Strategy: FULL
(5) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(6) Obligation:
TRS:
Rules:
circ(cons(a, s), t) → cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) → cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) → cons(lift, circ(s, t))
circ(circ(s, t), u) → circ(s, circ(t, u))
circ(s, id) → s
circ(id, s) → s
circ(cons(lift, s), circ(cons(lift, t), u)) → circ(cons(lift, circ(s, t)), u)
subst(a, id) → a
msubst(a, id) → a
msubst(msubst(a, s), t) → msubst(a, circ(s, t))
Types:
circ :: cons:id → cons:id → cons:id
cons :: lift → cons:id → cons:id
msubst :: lift → cons:id → lift
lift :: lift
id :: cons:id
subst :: subst → cons:id → subst
hole_cons:id1_0 :: cons:id
hole_lift2_0 :: lift
hole_subst3_0 :: subst
gen_cons:id4_0 :: Nat → cons:id
(7) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
circ,
msubstThey will be analysed ascendingly in the following order:
circ = msubst
(8) Obligation:
TRS:
Rules:
circ(
cons(
a,
s),
t) →
cons(
msubst(
a,
t),
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
a,
t)) →
cons(
a,
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
lift,
t)) →
cons(
lift,
circ(
s,
t))
circ(
circ(
s,
t),
u) →
circ(
s,
circ(
t,
u))
circ(
s,
id) →
scirc(
id,
s) →
scirc(
cons(
lift,
s),
circ(
cons(
lift,
t),
u)) →
circ(
cons(
lift,
circ(
s,
t)),
u)
subst(
a,
id) →
amsubst(
a,
id) →
amsubst(
msubst(
a,
s),
t) →
msubst(
a,
circ(
s,
t))
Types:
circ :: cons:id → cons:id → cons:id
cons :: lift → cons:id → cons:id
msubst :: lift → cons:id → lift
lift :: lift
id :: cons:id
subst :: subst → cons:id → subst
hole_cons:id1_0 :: cons:id
hole_lift2_0 :: lift
hole_subst3_0 :: subst
gen_cons:id4_0 :: Nat → cons:id
Generator Equations:
gen_cons:id4_0(0) ⇔ id
gen_cons:id4_0(+(x, 1)) ⇔ cons(lift, gen_cons:id4_0(x))
The following defined symbols remain to be analysed:
msubst, circ
They will be analysed ascendingly in the following order:
circ = msubst
(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol msubst.
(10) Obligation:
TRS:
Rules:
circ(
cons(
a,
s),
t) →
cons(
msubst(
a,
t),
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
a,
t)) →
cons(
a,
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
lift,
t)) →
cons(
lift,
circ(
s,
t))
circ(
circ(
s,
t),
u) →
circ(
s,
circ(
t,
u))
circ(
s,
id) →
scirc(
id,
s) →
scirc(
cons(
lift,
s),
circ(
cons(
lift,
t),
u)) →
circ(
cons(
lift,
circ(
s,
t)),
u)
subst(
a,
id) →
amsubst(
a,
id) →
amsubst(
msubst(
a,
s),
t) →
msubst(
a,
circ(
s,
t))
Types:
circ :: cons:id → cons:id → cons:id
cons :: lift → cons:id → cons:id
msubst :: lift → cons:id → lift
lift :: lift
id :: cons:id
subst :: subst → cons:id → subst
hole_cons:id1_0 :: cons:id
hole_lift2_0 :: lift
hole_subst3_0 :: subst
gen_cons:id4_0 :: Nat → cons:id
Generator Equations:
gen_cons:id4_0(0) ⇔ id
gen_cons:id4_0(+(x, 1)) ⇔ cons(lift, gen_cons:id4_0(x))
The following defined symbols remain to be analysed:
circ
They will be analysed ascendingly in the following order:
circ = msubst
(11) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
circ(
gen_cons:id4_0(
n16_0),
gen_cons:id4_0(
n16_0)) →
gen_cons:id4_0(
n16_0), rt ∈ Ω(1 + n16
0)
Induction Base:
circ(gen_cons:id4_0(0), gen_cons:id4_0(0)) →RΩ(1)
gen_cons:id4_0(0)
Induction Step:
circ(gen_cons:id4_0(+(n16_0, 1)), gen_cons:id4_0(+(n16_0, 1))) →RΩ(1)
cons(lift, circ(gen_cons:id4_0(n16_0), gen_cons:id4_0(n16_0))) →IH
cons(lift, gen_cons:id4_0(c17_0))
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(12) Complex Obligation (BEST)
(13) Obligation:
TRS:
Rules:
circ(
cons(
a,
s),
t) →
cons(
msubst(
a,
t),
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
a,
t)) →
cons(
a,
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
lift,
t)) →
cons(
lift,
circ(
s,
t))
circ(
circ(
s,
t),
u) →
circ(
s,
circ(
t,
u))
circ(
s,
id) →
scirc(
id,
s) →
scirc(
cons(
lift,
s),
circ(
cons(
lift,
t),
u)) →
circ(
cons(
lift,
circ(
s,
t)),
u)
subst(
a,
id) →
amsubst(
a,
id) →
amsubst(
msubst(
a,
s),
t) →
msubst(
a,
circ(
s,
t))
Types:
circ :: cons:id → cons:id → cons:id
cons :: lift → cons:id → cons:id
msubst :: lift → cons:id → lift
lift :: lift
id :: cons:id
subst :: subst → cons:id → subst
hole_cons:id1_0 :: cons:id
hole_lift2_0 :: lift
hole_subst3_0 :: subst
gen_cons:id4_0 :: Nat → cons:id
Lemmas:
circ(gen_cons:id4_0(n16_0), gen_cons:id4_0(n16_0)) → gen_cons:id4_0(n16_0), rt ∈ Ω(1 + n160)
Generator Equations:
gen_cons:id4_0(0) ⇔ id
gen_cons:id4_0(+(x, 1)) ⇔ cons(lift, gen_cons:id4_0(x))
The following defined symbols remain to be analysed:
msubst
They will be analysed ascendingly in the following order:
circ = msubst
(14) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol msubst.
(15) Obligation:
TRS:
Rules:
circ(
cons(
a,
s),
t) →
cons(
msubst(
a,
t),
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
a,
t)) →
cons(
a,
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
lift,
t)) →
cons(
lift,
circ(
s,
t))
circ(
circ(
s,
t),
u) →
circ(
s,
circ(
t,
u))
circ(
s,
id) →
scirc(
id,
s) →
scirc(
cons(
lift,
s),
circ(
cons(
lift,
t),
u)) →
circ(
cons(
lift,
circ(
s,
t)),
u)
subst(
a,
id) →
amsubst(
a,
id) →
amsubst(
msubst(
a,
s),
t) →
msubst(
a,
circ(
s,
t))
Types:
circ :: cons:id → cons:id → cons:id
cons :: lift → cons:id → cons:id
msubst :: lift → cons:id → lift
lift :: lift
id :: cons:id
subst :: subst → cons:id → subst
hole_cons:id1_0 :: cons:id
hole_lift2_0 :: lift
hole_subst3_0 :: subst
gen_cons:id4_0 :: Nat → cons:id
Lemmas:
circ(gen_cons:id4_0(n16_0), gen_cons:id4_0(n16_0)) → gen_cons:id4_0(n16_0), rt ∈ Ω(1 + n160)
Generator Equations:
gen_cons:id4_0(0) ⇔ id
gen_cons:id4_0(+(x, 1)) ⇔ cons(lift, gen_cons:id4_0(x))
No more defined symbols left to analyse.
(16) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
circ(gen_cons:id4_0(n16_0), gen_cons:id4_0(n16_0)) → gen_cons:id4_0(n16_0), rt ∈ Ω(1 + n160)
(17) BOUNDS(n^1, INF)
(18) Obligation:
TRS:
Rules:
circ(
cons(
a,
s),
t) →
cons(
msubst(
a,
t),
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
a,
t)) →
cons(
a,
circ(
s,
t))
circ(
cons(
lift,
s),
cons(
lift,
t)) →
cons(
lift,
circ(
s,
t))
circ(
circ(
s,
t),
u) →
circ(
s,
circ(
t,
u))
circ(
s,
id) →
scirc(
id,
s) →
scirc(
cons(
lift,
s),
circ(
cons(
lift,
t),
u)) →
circ(
cons(
lift,
circ(
s,
t)),
u)
subst(
a,
id) →
amsubst(
a,
id) →
amsubst(
msubst(
a,
s),
t) →
msubst(
a,
circ(
s,
t))
Types:
circ :: cons:id → cons:id → cons:id
cons :: lift → cons:id → cons:id
msubst :: lift → cons:id → lift
lift :: lift
id :: cons:id
subst :: subst → cons:id → subst
hole_cons:id1_0 :: cons:id
hole_lift2_0 :: lift
hole_subst3_0 :: subst
gen_cons:id4_0 :: Nat → cons:id
Lemmas:
circ(gen_cons:id4_0(n16_0), gen_cons:id4_0(n16_0)) → gen_cons:id4_0(n16_0), rt ∈ Ω(1 + n160)
Generator Equations:
gen_cons:id4_0(0) ⇔ id
gen_cons:id4_0(+(x, 1)) ⇔ cons(lift, gen_cons:id4_0(x))
No more defined symbols left to analyse.
(19) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
circ(gen_cons:id4_0(n16_0), gen_cons:id4_0(n16_0)) → gen_cons:id4_0(n16_0), rt ∈ Ω(1 + n160)
(20) BOUNDS(n^1, INF)